from django.db import models
from grades.models import Grades
from django.contrib.auth.models import User

# Create your models here.

"""
GENDER_CHOICES
这是一个选项列表，用于限制字段的可选值。
每个元组包含两个元素：
第一个元素（如 'M'）：​数据库中存储的实际值​（小写字符串）。
第二个元素（如 '男'）：​用户界面显示的可读文本​（中文）。
"""

GENDER_CHOICES = [
    ('男', '男'),
    ('男', '女'),
]

class Student(models.Model):
    student_number = models.CharField(max_length=20, unique=True,verbose_name='学号')
    student_name = models.CharField(max_length=50, verbose_name='姓名')
    # choices=GENDER_CHOICES：绑定到上述选项列表，确保字段值只能是 M 或 F。
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES, verbose_name='性别')
    birthday = models.DateField(verbose_name='出生日期', help_text='格式例如：2025-02-27') 
    contact_number = models.CharField(max_length=20, verbose_name='联系方式')
    address = models.TextField(verbose_name='家庭住址')
    create_time = models.DateTimeField(auto_now_add=True,verbose_name='创建日期')

    # user表一对一关联
    user = models.OneToOneField(User, on_delete=models.CASCADE) # 设置外键

    # 班级表一对多关联
    grade = models.ForeignKey(Grades, on_delete=models.CASCADE, related_name='students', verbose_name='班级')
    
    def __str__(self):
        return self.student_name
    
    class Meta:
        db_table = "student"
        verbose_name_plural = "学生信息"
        verbose_name = "学生信息"
        ordering = ['-create_time']  # 按创建日期倒序排列
        
    